Conversation
Fixed a bunch of issues with the simplified version. It should behave better now.
Fixed minor UI bugs and URL pointing issues
Builds an apkmirror link to link the app . Might want to change the implementation later
Fixed "Download original APK" button UI for reddit. Added more extensive timestamp for when patches are published. Added Patch notes section in the patches screen. Fixed minor UI problems
Added a device indicator on the top which allows to see if a device is connected or not. Other minor UI and logic fixes.
No more hardcoded disabled patches, directly read from the patches files Made a bunch of UI improvements for the patch screen. Simplified mode loading now shows a circular icon instead of making up progress numbers.
User can remove libs if they do not need it
We can now generate a single cross platform jar file. Fixed an issue where cache wasn't clearing on windows
No more code duplication. The patching logic is present in a central engine that both the cli and the gui can call to make it run however they want.
Minor fixes for various stuff
Better patching logging Simplified version. Added --force for unsupported versions. Added a button for --continue-on-error to allow gui users to continue patching even when if a patch throws an error.
added fixes from other branches and new mini theme
Added a better offline mode experience for the user. Minor UI improvemments to the patches and patchselection screens. Added some updates from other branch (but not all, might lack some functionality that are present in other branches)
|
Could you check if the morphe window looks decent on windows now? |
|
I don't use Windows but maybe someone else can check: https://github.com/MorpheApp/morphe-cli/suites/63221859474/artifacts/6259679436 |
|
Oh wait, are you on Linux? How does it look on that? |
|
I'm on Mac. It looks good for me. |
|
oh lmao, I am on mac too. It looks decent on mac, but the second I switch to my windows laptop, the colors look a bit washed. I don't if it's a colors issue or my screen issue. |
|
what if the grey text is black, and the red is white or black? |
Revamped supported apps cards to show experimental versions. Revamped App info card to now handle experimental version, stable version and a bunch of edge cases. Patching result screen is now properly centered. Unable to strip archs bug fixed. Minor UI fixes. (Still a lot of work to do here)
|
See how the Supported apps section looks now. What are your opinions on it? Please tell me your ideas to improve it, if you have any. |
|
The console output of the GUI is so much easier to read when the patch is displayed last: Compared to CLI: I think the CLI console could be changed to use the same 'patch last' format of: |
wow that cool, animation background
|
if i uncheck in strip native libraries still got this error
i was report this on the Reddit a day ago use this version patch version: 1.23.0-dev.8 |
|
@eksan127 Sorry that was the old build. Try this: |
Yea, will change this.
Roger that |
@prateek-who patching work but output file still have all architecture |
|
Will look into this |
|
@wchill Had a small confusion. When a user passes --striplibs, we pass it using keepArchitectures right. The patcher does its job, and when it gets to the lib stripping part, it does it correctly on its temp directory. It properly deletes the unwanted arch dirs from disk, and even logs "Stripped N lib files". This is good. But here's the issue now. The way the engine rebuilds the output APK is by copying the original input APK and then applying The deletion set handed to applyTo() is always empty. And that means no libs get stripped. Unless I am reading this wrong (which also could be true), this is the issue right now. Could you check if this is true? Or if there is some issue on my end in this PR? (Because I messed up earlier and had to solve a lot of conflicts, so there could be chances that maybe something changed during my merge fest.) |
|
It's a no-op because we already delete the files on disk. So there's no need to delete them in the later step. At least, that's how it's supposed to work. |
|
Is the manager using the keepArchitecture form the patcher? If yes, then how is it doing that properly? I tested
This should show the archs present. Could you check once too. I could've made a mistake, but it seems broken. |
|
This is where the stripping happens: https://github.com/MorpheApp/morphe-patcher/blob/dev/src/main/kotlin/app/morphe/patcher/resource/coder/ArsclibResourceCoder.kt#L220 I don't have time to investigate this for the next few days, but you could set a breakpoint there and see what is happening on the file system to debug. |
|
Did the line 220 check via the filesystem instead of a debugger.
|
|
Honestly we shouldn't be copying the original APK anyway for arsclib because all of the resources are already being repacked. Feel free to send a PR to fix this. Easy fix is you can populate the set returned by getDeletedFiles() by modifying |
|
Sure thing, will submit a PR using your easy approach. I asked claude what the harder fix would be and I've been trying to make sense of its explanation for 30 mins now. From what I understand, we would have to rework how the patcher assembles the final APK. Currently it's built by copying the original and applying a diff, and the harder fix seems moves to packing it from scratch out of the working dir. It makes some sense on the surface but I don't seem to understand how it is going to work. Seems like the right long term direction, but maybe we do that in the future. |
|
Conceptually it's just taking the resources.apk and adding the dex files, which I think should work but is likely to have edge cases. So it's safer to just go with the deleted files approach. |
|
There is one small issue that needs your input Liso. I wanted to customize titleBarInset to give the window a polished, edge-to-edge look. Initially it felt impossible, but eventually I managed to make it work with JetBrains Runtime. This JRE gives access to control the title bar insets. Now, this is works flawlessly in dev, because the toolchain pulls JBR in automatically, however, in reality, people generally use OpenJDK, Temurin, Zulu, etc, none of which expose the JBR title bar apis and this is where this breaks. The title bar looks ugly. We lose the ability to control them. We have two possible solutions:
However, with this option, we'll also have to urge the users to use JBR in the documentation. What do you think? |
|
If it doesn't easily work with a simple Zulu/OpenJDK install, then we could chuck it. It's only for visual appearance and I don't think it's worth asking the user to do extra steps. |





No description provided.